package com.sgb.kjwl.di.machine;

import com.sgb.kjwl.repository.MachineRepertory;
import com.sgb.kjwl.repository.impl.MachineRepertoryImpl;
import com.sgb.kjwl.view.ui.activity.house.CarBrandActivity;
import com.sgb.kjwl.view.ui.activity.house.LeaseCategoryListActivity;
import com.sgb.kjwl.view.ui.activity.house.LeaseHallMapActivity;
import com.sgb.kjwl.view.ui.activity.house.LeaseInviteActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.AskLeaseActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.publish.AskLeaseFactoryActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.publish.AskLeaseFarmActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.publish.AskLeaseHouseActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.publish.AskLeaseLandActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.AskLeasePubEditActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.AskLeaseQuedPriceActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.CarListActivity3;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MachineInActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MachineListActivity3;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MachineOutActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MapLeaseActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MyAskLeaseActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.MyAskLeaseQutedListActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.publish.PublishLeaseInfoActivity;
import com.sgb.kjwl.view.ui.activity.leaseAsk.UpdateLeaseQuedPriceActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseMemberListActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseMemberPriceListActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderConfirmActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderDeviceActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderMachineActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderPaymentActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderReceiveActivity;
import com.sgb.kjwl.view.ui.activity.self.lease.LeaseOrderSuccessActivity;
import com.sgb.kjwl.view.ui.activity.self.publish.SelfLeaseListActivity;
import com.sgb.kjwl.viewmodel.house.LeaseCategoryListActivityModel;
import com.sgb.kjwl.viewmodel.house.LeaseHallMapModel;
import com.sgb.kjwl.viewmodel.house.LeaseOrderSuccessModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseFactoryModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseFarmModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseHouseModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseLandModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseModel;
import com.sgb.kjwl.viewmodel.machine.AskLeasePubEditModel;
import com.sgb.kjwl.viewmodel.machine.AskLeaseQuePriceModel;
import com.sgb.kjwl.viewmodel.machine.CarListModel3;
import com.sgb.kjwl.viewmodel.machine.LeaseInviteModel;
import com.sgb.kjwl.viewmodel.machine.LeaseOrderConfirmModel;
import com.sgb.kjwl.viewmodel.machine.LeaseOrderDeviceModel;
import com.sgb.kjwl.viewmodel.machine.LeaseOrderMachineModel;
import com.sgb.kjwl.viewmodel.machine.LeaseOrderPaymentModel;
import com.sgb.kjwl.viewmodel.machine.LeaseOrderReceiveModel;
import com.sgb.kjwl.viewmodel.machine.MachineDetailModel;
import com.sgb.kjwl.viewmodel.machine.MachineInModel;
import com.sgb.kjwl.viewmodel.machine.MachineListModel3;
import com.sgb.kjwl.viewmodel.machine.MapLeaseModel;
import com.sgb.kjwl.viewmodel.machine.MyAskLeaseModel;
import com.sgb.kjwl.viewmodel.machine.MyAskLeaseQutedListModel;
import com.sgb.kjwl.viewmodel.machine.PublishLeaseInfoModel;
import com.sgb.kjwl.viewmodel.machine.UpdateLeaseQuePriceModel;
import com.sgb.kjwl.viewmodel.self.publish.CarBrandModel;
import com.sgb.kjwl.viewmodel.self.publish.LeaseMemberListModel;
import com.sgb.kjwl.viewmodel.self.publish.LeaseMemberPriceListModel;
import com.sgb.kjwl.viewmodel.self.publish.SelfLeaseListModel;
import com.swgk.core.base.di.Activity;
import com.swgk.core.base.api.BaseApiSource;
import com.swgk.core.base.model.preference.BasePreferenceSource;

import dagger.Module;
import dagger.Provides;

@Module
public class MachineModule {
    private MachineOutActivity outActivity;
    private MachineInActivity inActivity;
    private MachineListActivity3 machineListActivity3;
    private CarListActivity3 carListActivity3;
    private MyAskLeaseActivity myAskActivity;
    private MyAskLeaseQutedListActivity myAskLeaseQutedListActivity;
    private AskLeaseActivity askLeaseActivity;
    private MapLeaseActivity mapLeaseActivity;
    private AskLeaseQuedPriceActivity priceActivity;
    private AskLeasePubEditActivity pubEditActivity;
    private PublishLeaseInfoActivity publishleaseinfoactivity;
    private LeaseInviteActivity leaseInviteActivity;
    private UpdateLeaseQuedPriceActivity updateLeaseQuedPriceActivity;
    private LeaseOrderMachineActivity leaseOrderMachineActivity;
    private LeaseOrderDeviceActivity leaseOrderDeviceActivity;

    private LeaseOrderSuccessActivity leaseOrderSuccessActivity;
    private LeaseOrderPaymentActivity leaseOrderPaymentActivity;
    private LeaseOrderConfirmActivity leaseOrderConfirmActivity;
    private LeaseHallMapActivity leaseHallMapActivity;
    private AskLeaseLandActivity askLeaseLandActivity;
    private AskLeaseFactoryActivity askLeaseFactoryActivity;
    private AskLeaseFarmActivity askLeaseFarmActivity;
    private CarBrandActivity carBrandActivity;
    private AskLeaseHouseActivity houseActivity;
    private LeaseOrderReceiveActivity leaseOrderReceiveActivity;
    private SelfLeaseListActivity selfLeaseListActivity;
    private LeaseCategoryListActivity leaseCategoryListActivity;
    private LeaseMemberListActivity leaseMemberListActivity;
    private LeaseMemberPriceListActivity leaseMemberPriceListActivity;

    public MachineModule(MachineOutActivity activity) {
        outActivity = activity;
    }

    public MachineModule(LeaseInviteActivity activity) {
        leaseInviteActivity = activity;
    }

    public MachineModule(PublishLeaseInfoActivity activity) {
        publishleaseinfoactivity = activity;
    }

    public MachineModule(AskLeasePubEditActivity activity) {
        pubEditActivity = activity;
    }

    public MachineModule(AskLeaseQuedPriceActivity activity) {
        priceActivity = activity;
    }

    public MachineModule(MachineInActivity activity) {
        inActivity = activity;
    }

    public MachineModule(MachineListActivity3 machineListActivity3) {
        this.machineListActivity3 = machineListActivity3;
    }

    public MachineModule(CarListActivity3 carListActivity3) {
        this.carListActivity3 = carListActivity3;
    }

    public MachineModule(AskLeaseActivity askLeaseActivity1) {
        this.askLeaseActivity = askLeaseActivity1;
    }

    public MachineModule(MyAskLeaseActivity askLeaseActivity1) {
        this.myAskActivity = askLeaseActivity1;
    }

    public MachineModule(MyAskLeaseQutedListActivity askLeaseActivity1) {
        this.myAskLeaseQutedListActivity = askLeaseActivity1;
    }

    public MachineModule(MapLeaseActivity mapLeaseActivity1) {
        this.mapLeaseActivity = mapLeaseActivity1;
    }

    public MachineModule(UpdateLeaseQuedPriceActivity updateLeaseQuedPriceActivity) {
        this.updateLeaseQuedPriceActivity = updateLeaseQuedPriceActivity;
    }

    public MachineModule(LeaseOrderMachineActivity leaseOrderMachineActivity) {
        this.leaseOrderMachineActivity = leaseOrderMachineActivity;
    }

    public MachineModule(LeaseOrderSuccessActivity leaseOrderSuccessActivity) {
        this.leaseOrderSuccessActivity = leaseOrderSuccessActivity;
    }

    public MachineModule(LeaseHallMapActivity leaseHallMapActivity) {
        this.leaseHallMapActivity = leaseHallMapActivity;
    }

    public MachineModule(AskLeaseLandActivity askLeaseLandActivity) {
        this.askLeaseLandActivity = askLeaseLandActivity;
    }


    public MachineModule(AskLeaseFactoryActivity askLeaseFactoryActivity) {
        this.askLeaseFactoryActivity = askLeaseFactoryActivity;
    }

    public MachineModule(AskLeaseFarmActivity askLeaseFarmActivity) {
        this.askLeaseFarmActivity = askLeaseFarmActivity;
    }

    public MachineModule(CarBrandActivity carBrandActivity) {
        this.carBrandActivity = carBrandActivity;
    }

    public MachineModule(AskLeaseHouseActivity houseActivity) {
        this.houseActivity = houseActivity;
    }

    public MachineModule(LeaseOrderPaymentActivity activity) {
        this.leaseOrderPaymentActivity = activity;
    }

    public MachineModule(LeaseOrderConfirmActivity activity) {
        this.leaseOrderConfirmActivity = activity;
    }

    public MachineModule(LeaseOrderReceiveActivity activity) {
        this.leaseOrderReceiveActivity = activity;
    }

    public MachineModule(SelfLeaseListActivity activity) {
        this.selfLeaseListActivity = activity;
    }

    public MachineModule(LeaseCategoryListActivity activity) {
        this.leaseCategoryListActivity = activity;
    }

    public MachineModule(LeaseMemberListActivity activity) {
        this.leaseMemberListActivity = activity;
    }

    public MachineModule(LeaseMemberPriceListActivity activity) {
        this.leaseMemberPriceListActivity = activity;
    }

    public MachineModule(LeaseOrderDeviceActivity activity) {
        this.leaseOrderDeviceActivity = activity;
    }

    @Provides
    @Activity
    MachineRepertory provideMachineRepertory(BaseApiSource apiSource, BasePreferenceSource preferenceSource) {
        return new MachineRepertoryImpl(apiSource, preferenceSource);
    }

    @Provides
    @Activity
    MachineDetailModel provideMachineDetailModel(MachineRepertory repertory) {
        return new MachineDetailModel(outActivity, repertory);
    }

    @Provides
    @Activity
    MachineInModel provideMachineInModel(MachineRepertory repertory) {
        return new MachineInModel(inActivity, repertory);
    }

    @Provides
    @Activity
    MachineListModel3 provideMachineListModel3(MachineRepertory repertory) {
        return new MachineListModel3(machineListActivity3, repertory);
    }

    @Provides
    @Activity
    CarListModel3 provideCarListModel3(MachineRepertory repertory) {
        return new CarListModel3(carListActivity3, repertory);
    }

    @Provides
    @Activity
    AskLeaseModel provideAskLeaseModel(MachineRepertory repertory) {
        return new AskLeaseModel(askLeaseActivity, repertory);
    }

    @Provides
    @Activity
    MyAskLeaseModel provideMyAskLeaseModel(MachineRepertory repertory) {
        return new MyAskLeaseModel(myAskActivity, repertory);
    }

    @Provides
    @Activity
    MyAskLeaseQutedListModel provideMyAskLeaseQutedModel(MachineRepertory repertory) {
        return new MyAskLeaseQutedListModel(myAskLeaseQutedListActivity, repertory);
    }

    @Provides
    @Activity
    AskLeasePubEditModel provideAskLeasePubEidtModel(MachineRepertory repertory) {
        return new AskLeasePubEditModel(pubEditActivity, repertory);
    }

    @Provides
    @Activity
    AskLeaseQuePriceModel provideAskLeasePriceModel(MachineRepertory repertory) {
        return new AskLeaseQuePriceModel(priceActivity, repertory);
    }

    @Provides
    @Activity
    MapLeaseModel provideMapLeaseModel(MachineRepertory repertory) {
        return new MapLeaseModel(mapLeaseActivity, repertory);
    }

    @Provides
    @Activity
    PublishLeaseInfoModel provideLeaseInfoModel(MachineRepertory repertory) {
        return new PublishLeaseInfoModel(publishleaseinfoactivity, repertory);
    }

    @Provides
    @Activity
    LeaseInviteModel provideLeaseInviteModel() {
        return new LeaseInviteModel(leaseInviteActivity);
    }

    @Provides
    @Activity
    UpdateLeaseQuePriceModel provideUpdateLeaseQuePriceModel() {
        return new UpdateLeaseQuePriceModel(updateLeaseQuedPriceActivity);
    }

    @Provides
    @Activity
    LeaseOrderMachineModel provideLeaseOrderMachineModel(MachineRepertory repertory) {
        return new LeaseOrderMachineModel(leaseOrderMachineActivity, repertory);
    }

    @Provides
    @Activity
    LeaseOrderDeviceModel provideLeaseOrderDeviceModel(MachineRepertory repertory) {
        return new LeaseOrderDeviceModel(leaseOrderDeviceActivity, repertory);
    }

    @Provides
    @Activity
    LeaseOrderSuccessModel provideLeaseOrderSuccessModel() {
        return new LeaseOrderSuccessModel(leaseOrderSuccessActivity);
    }

    @Provides
    @Activity
    LeaseOrderPaymentModel provideLeaseOrderPaymentModel() {
        return new LeaseOrderPaymentModel(leaseOrderPaymentActivity);
    }

    @Provides
    @Activity
    LeaseOrderConfirmModel provideLeaseOrderConfirmModel() {
        return new LeaseOrderConfirmModel(leaseOrderConfirmActivity);
    }

    @Provides
    @Activity
    LeaseOrderReceiveModel provideLeaseOrderReceiveModel() {
        return new LeaseOrderReceiveModel(leaseOrderReceiveActivity);
    }

    @Provides
    @Activity
    LeaseHallMapModel provideLeaseHallMapModel(MachineRepertory repertory) {
        return new LeaseHallMapModel(leaseHallMapActivity,repertory);
    }

    @Provides
    @Activity
    AskLeaseLandModel provideAskLeaseLandModel(MachineRepertory repertory) {
        return new AskLeaseLandModel(askLeaseLandActivity, repertory);
    }

    @Provides
    @Activity
    AskLeaseFactoryModel provideAskLeaseFactoryModel(MachineRepertory repertory) {
        return new AskLeaseFactoryModel(askLeaseFactoryActivity, repertory);
    }

    @Provides
    @Activity
    AskLeaseFarmModel provideAskLeaseFarmModel(MachineRepertory repertory) {
        return new AskLeaseFarmModel(askLeaseFarmActivity, repertory);
    }

    @Provides
    @Activity
    CarBrandModel provideCarBrandModel() {
        return new CarBrandModel(carBrandActivity);
    }

    @Provides
    @Activity
    AskLeaseHouseModel provideAskLeaseHouseModel(MachineRepertory repertory) {
        return new AskLeaseHouseModel(houseActivity, repertory);
    }

    @Provides
    @Activity
    SelfLeaseListModel provideSelfLeaseListModel() {
        return new SelfLeaseListModel(selfLeaseListActivity);
    }

    @Provides
    @Activity
    LeaseCategoryListActivityModel provideLeaseCategoryListModel(MachineRepertory repertory) {
        return new LeaseCategoryListActivityModel(leaseCategoryListActivity,repertory);
    }

    @Provides
    @Activity
    LeaseMemberListModel provideLeaseMemberListModel() {
        return new LeaseMemberListModel(leaseMemberListActivity);
    }

    @Provides
    @Activity
    LeaseMemberPriceListModel provideLeaseMemberPriceListModel() {
        return new LeaseMemberPriceListModel(leaseMemberPriceListActivity);
    }
}
